package SecondeStage.MianXiangDuiXiang.AbstractClass.Interface;

public class Interface01 {
    // 接口就是给出一些没有实现的方法，封装在一起，当某个类需要使用的时候，在根据具体情况把这些方法实现出来
    public static void main(String[] args) {
        // 接口不能被实例化
        //AInterface aInterface =new AInterface();

        // 接口中的属性的访问形式： 接口名.属性名
        System.out.println(AInterface.n1);

        // 接口多态参数: 接口类型的变量可以指向实现了该接口的对象实例
        AInterface aInterface1= new A();
        AInterface aInterface2= new C();

        // 接口多态数组
        AInterface[] aInterfaces= new AInterface[2];
        aInterfaces[0]=new A();
        aInterfaces[1]=new C();

        // 接口多态传递: AInterface继承了BInterface，而类A实现了AInterface接口，则相当于A实现了BInterface接口
        AInterface aInterface3 = new A();
        BInterface bInterface =new A();
    }

}


// 如果一个类 实现一个接口，需要将该接口的所有方法都实现，可以用alt+enter快速实现
class A implements AInterface{
    @Override
    public void hi() {
        System.out.println("hi.......");
    }
}

// 如果是抽象类实现了接口，可以不用实现接口的方法（抽象类本来就可以包含抽象方法，普通类不行）
abstract class B implements AInterface{

}

// 一个类可以同学实现多个接口
class C implements AInterface,BInterface{
    @Override
    public void hi() {

    }

}
